#字符类型：str
#作用：记录描述性质的数据，比如人的名字、性别、家庭地址、公司简介
#定义：在引号内按照从左到右的顺序依次包含一个个字符，引号可以是单引号、双引号、三引号

# res = str('大海')
# ses1 = '大海'
# print(res)
# print(ses1)
# res2=str([1,2,3])
# res3=[1,2,3]
# print(res2)
# print(type(res2))
# # 1 常用操作+内置的方法
# #优先掌握的操作：
# #1、按索引取值(正向取+反向取) ：只能取
msg = 'hello world'
print(msg[0])
print(msg[-1])
# # 字符串不能通过索引修改
msg[1]='A'
print(msg)
# #2、切片(顾头不顾尾，步长)查找字符串当中的一段值 [起始值:终止值:步长]
# #   相当于切黄瓜 一节一节
# print(msg[0:5]) # 默认步长是1
# print(msg[0:5:1])
# # 提取不会改变原值
# print(msg)
# print(msg[0:5:2])
# # 了解
# # 步长是负数
# print(msg[::-1])
# print(msg[10:5:-1])
# print(msg[-1:5:-1])
#
# #3、长度len方法 可以计算长度
# print(len(msg))
# #4、成员运算in和not in: 判断一个子字符串是否存在于一个大的字符串中
# # 返回布尔类型 True False
# print('dahai' in 'dahai is dsb')
# print('xialuo' in 'dahai is dsb')
# print('xialuo'not in 'dahai is dsb')
#
# # 字符串的方法
# # 增
# # 字符串拼接
#
# print('dahai'+'dsb')
#
# # format()
# print('my name is {}'.format('dahai'))
# print('my name is {1} , my age is {0}'.format(18,'dahai'))
# print('my name is {name} , my age is {age}'.format(age=18,name='dahai'))
#
# # join
#
# str1 = '真正的勇士'
# str2 = '敢于直面惨淡的人生'
# str3 = '敢于正视淋漓的鲜血'
#
# print(''.join([str1,str2,str3]))
# # 空格字符串
# print(' '.join([str1,str2,str3]))
# # 逗号字符串
# print(','.join([str1,str2,str3]))
# print('哇塞'.join([str1,str2,str3]))
#
# # 删
# # name1 = 'dahai'
# #
# # del  name1
# # print(name1)
# # 改
# #1、 字符串字母变大写和变小写 lower,upper
# msg1 = 'abc'
# msg2=msg1.upper()
# print(msg2)
# print(msg1)
# # 注意字符串进行改变需要重新赋值，所以它也是不可变类型，它的原值的变量不会变，
# # 只是做了一个方法改变了它的值，重新赋值给一个新的变量
#
# # 2把第一个字母转换成大写 capitalize
#
# letter = 'abcd'
# print(letter.capitalize())
# #3 每个单词的首字母进行大写转换 title
#
# letter_msg = 'hello world'
# print(letter_msg.title())
#
# # 4把字符串切分成列表  split 默认空格字符切分
# msgg = 'hello world python'
# msgg1=msgg.split()
# print(msgg1)
# # 可以切分你想要的字符 比如*
# msggg = 'hello*world*python'
# msggg1=msggg.split('*')
# print(msggg1)
# #切分split的作用:针对按照某种分隔符组织的字符串，可以用split将其切分成列表，进而进行取值
# msgggg = 'root:123456'
# print(msgggg[5:11])
# msgggg1=msgggg.split(':')
# print(msgggg1[1])
#
# #5、去掉字符串左右两边的字符strip不写默认是空格字符，不管中间的其他的字符
# user = '         dahai        '
# print(user.strip())
#
# # name=input('请输入用户名').strip()
# # print('dahai'==name)
#
# # 了解
# # center,ljust,rjust 多余添加自己想要的字符
# print('dahai'.center(11,'*'))
# print('dahai'.ljust(11,'*'))
# print('dahai'.rjust(11,'*'))
#
# # 查
# #1、find,rfind,index,rindex
# # 查找子字符串在大字符串的那个位置（起始索引）
# #
# msg = 'hello dahai is dsb'
# print(msg.find('dahai'))
# # 在大字符串的6号索引
# #  找到字符串的起始索引，默认约束的范围是所有字符
# print(msg.find('dahai',0,3))
# # 约束范围是0开始到3结束，所以找不到，但是找不到会返回-1，不会报错
#
# # print(msg.index('dahai',0,3))
#
# # 没找到会报错
#
# msg1 = 'dahai第二个dahai'
# print(msg1.find('dahai'))
# print(msg1.rfind('dahai'))
#
# # 统计一个子字符串在大字符串中出现的次数 count
# print(msg1.count('dahai'))
#
# # 判断一个字符串里的数据是不是都是数字 isdigit # 返回布尔值
# num = '1818'
# print(num.isdigit())
# # 判断每个元素是不是字母 isalpha
# letter1 = 'abc'
# print(letter1.isalpha())
#
# # 比较开头的元素是否相同 startswith
# # 比较结尾的元素是否相同 endswith
# msga = 'dahai is dsb'
# print(msga.startswith('dahai'))
# print(msga.endswith('sb'))
# print(msga.endswith('b'))
# # 判断字符串中的值是否全是小写的 islower
# # 判断字符串中的值是否全是大写的 isupper
# letter2 = 'ABC'
# print(letter2.isupper())
# letter2 = 'abc'
# print(letter2.islower())
# # 字符串的转义
# # 字符串的转义   加了 \  字符不再表示它本身的含义
# # 常用的  \n  \t
# print('hello \n python')# 换行
# print('hello \t python') # tab   4个空格
# # 字符串的反转义  r    /n就是/n
# print(r'hello \n python')

